package br.com.velp.vskygeo.entidade;

import java.io.Serializable;
import java.util.UUID;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 06.08.2013 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <descricao> Classe Base Para Realização dos Mapeamentos de Entidades do Hibernate </descricao>
 * </sumario>
 */
public abstract class EntityBase implements Serializable {

    public abstract Serializable getId();

    @Override
    public boolean equals(Object obj) {
	
        if (obj == null) {
	    return false;
	}
        
	if (!obj.getClass().equals(this.getClass())) {
	    return false;
	}
        
	EntityBase other = (EntityBase) obj;
        
	if (other.getId() == null && this.getId() == null) {
	    return (obj == this);
	}
        
	if (other.getId() != null && this.getId() == null) {
	    return false;
	}
        
	if (other.getId() == null && this.getId() != null) {
	    return false;
	}
        
        return (other.getId().equals(this.getId()));
        
    }

    @Override
    public int hashCode() {
        
        return UUID.randomUUID().hashCode();
        
    }
    
}
